/**
 * 通用方法封装处理
 * Copyright (c) 2019 xhcl 
 */
$(function() {
	
	//  layer扩展皮肤
	if (window.layer !== undefined) {
	 /*	layer.config({
		    extend: 'moon/style.css',
		    skin: 'layer-ext-moon'
		});
		
		*/

		layer.config({
		    extend: ['extend/layer.ext.js', 'skin/moon/style.css'],
		    skin: 'layer-ext-moon'
		});
	}
	
	// 回到顶部绑定
	if ($.fn.toTop !== undefined) {
		$('#scroll-up').toTop();
	}
	
	// select2复选框事件绑定
	if ($.fn.select2 !== undefined) {
        $.fn.select2.defaults.set( "theme", "bootstrap" );
		$("select.form-control:not(.noselect2)").each(function () {
			$(this).select2().on("change", function () {
				$(this).valid();
			})
		})
	}
	
	// iCheck单选框及复选框事件绑定
	if ($.fn.iCheck !== undefined) {
		$(".check-box:not(.noicheck),.radio-box:not(.noicheck)").each(function() {
            $(this).iCheck({
                checkboxClass: 'icheckbox-blue',
                radioClass: 'iradio-blue',
            })
        })
	}
	
	// 气泡弹出框特效（移到元素时）
	$(document).on("mouseenter", '.table [data-toggle="popover"]', function() {
		var _this = this;
		$(this).popover("show");
		$(".popover").on("mouseleave", function() {
			$(_this).popover('hide');
		});
	})

	// 气泡弹出框特效（离开元素时）
	$(document).on("mouseleave", '.table [data-toggle="popover"]', function() {
		var _this = this;
		setTimeout(function() {
			if (!$(".popover:hover").length) $(_this).popover("hide");
		}, 100);
	});
	
	// 取消回车自动提交表单
	$(document).on("keypress", ":input:not(textarea):not([type=submit])", function(event) {
        if (event.keyCode == 13) {
            event.preventDefault();
        }
    });
	 
	// laydate 时间控件绑定
	if ($(".select-time").length > 0) {
		 var startTime = {
            elem: '#startTime',
            format: 'YYYY-MM-DD',
            //min: laydate.now(), //设定最小日期为当前日期
            max: laydate.now(), //最大日期
            istime: true,
            istoday: false,
            choose: function (datas) {
            	//endTime.min = datas; //开始日选好后，重置结束日的最小日期
            	//endTime.start = datas //将结束日的初始值设定为开始日
            }
        };
        var endTime = {
            elem: '#endTime',
            format: 'YYYY-MM-DD',
           // min: laydate.now(),
            max: laydate.now(),
            istime: true,
            istoday: false,
            choose: function (datas) {
            	//startTime.max = datas; //结束日选好后，重置开始日的最大日期
            }
        };
	    laydate(startTime);
        laydate(endTime);
	}
	
	// tree 关键字搜索绑定
	if ($("#keyword").length > 0) {
		$("#keyword").bind("focus", function focusKey(e) {
		    if ($("#keyword").hasClass("empty")) {
		        $("#keyword").removeClass("empty");
		    }
		}).bind("blur", function blurKey(e) {
		    if ($("#keyword").val() === "") {
		        $("#keyword").addClass("empty");
		    }
		    $.tree.searchNode(e);
		}).bind("input propertychange", $.tree.searchNode);
	}
	
	// tree表格树 展开/折叠
	var expandFlag;
	$("#expandAllBtn").click(function() {
		var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
		expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
	    if (!expandFlag) {
	    	$.bttTable.bootstrapTreeTable('expandAll');
	    } else {
	    	$.bttTable.bootstrapTreeTable('collapseAll');
	    }
	    expandFlag = expandFlag ? false: true;
	})
	
	// 按下ESC按钮关闭弹层
	$('body', document).on('keyup', function(e) {
	    if (e.which === 27) {
	        $.modal.closeAll();
	    }
	});
});

(function ($) {
    'use strict';
    $.fn.toTop = function(opt) {
        var elem = this;
        var win = $(window);
        var doc = $('html, body');
        var options = $.extend({
            autohide: true,
            offset: 50,
            speed: 500,
            position: true,
            right: 15,
            bottom: 5
        }, opt);
        elem.css({
            'cursor': 'pointer'
        });
        if (options.autohide) {
            elem.css('display', 'none');
        }
        if (options.position) {
            elem.css({
                'position': 'fixed',
                'right': options.right,
                'bottom': options.bottom,
            });
        }
        elem.click(function() {
            doc.animate({
                scrollTop: 0
            }, options.speed);
        });
        win.scroll(function() {
            var scrolling = win.scrollTop();
            if (options.autohide) {
                if (scrolling > options.offset) {
                    elem.fadeIn(options.speed);
                } else elem.fadeOut(options.speed);
            }
        });
    };
})(jQuery);


//计算元素集合的总宽度
function calSumWidth(elements) {
    var width = 0;
    $(elements).each(function() {
        width += $(this).outerWidth(true);
    });
    return width;
}

/** 密码规则范围验证 */
function checkpwd(chrtype, password) {
	if (chrtype == 1) {
		if(!$.common.numValid(password)){
			$.modal.alertWarning("密码只能为0-9数字");
			return false;
		}
	} else if (chrtype == 2) {
		if(!$.common.enValid(password)){
			$.modal.alertWarning("密码只能为a-z和A-Z字母");
			return false;
		}
	} else if (chrtype == 3) {
		if(!$.common.enNumValid(password)){
			$.modal.alertWarning("密码必须包含字母以及数字");
			return false;
		}
	} else if (chrtype == 4) {
		if(!$.common.charValid(password)){
			$.modal.alertWarning("密码必须包含字母、数字、以及特殊符号-、_");
			return false;
		}
	}
	return true;
}

// 日志打印封装处理
var log = {
    log: function(msg) {
        console.log(msg);
    },
    info: function(msg) {
        console.info(msg);
    },
    warn: function(msg) {
        console.warn(msg);
    },
    error: function(msg) {
        console.error(msg);
    }
};

// 本地缓存处理
var storage = {
    set: function(key, value) {
        window.localStorage.setItem(key, value);
    },
    get: function(key) {
        return window.localStorage.getItem(key);
    },
    remove: function(key) {
        window.localStorage.removeItem(key);
    },
    clear: function() {
        window.localStorage.clear();
    }
};

// 主子表操作封装处理
var sub = {
    editColumn: function() {
    	var count = $("#" + table.options.id).bootstrapTable('getData').length;
    	var params = new Array();
    	for (var dataIndex = 0; dataIndex <= count; dataIndex++) {
    		var columns = $('#' + table.options.id + ' tr[data-index="' + dataIndex + '"] td');
    		var obj = new Object();
    		for (var i = 0; i < columns.length; i++) {
    			var inputValue = $(columns[i]).find('input');
    			var selectValue = $(columns[i]).find('select');
    			var key = table.options.columns[i].field;
    			if ($.common.isNotEmpty(inputValue.val())) {
    				obj[key] = inputValue.val();
    			} else if ($.common.isNotEmpty(selectValue.val())) {
    				obj[key] = selectValue.val();
    			} else {
    				obj[key] = "";
    			}
    		}
    		params.push({ index: dataIndex, row: obj });
    	}
    	$("#" + table.options.id).bootstrapTable("updateRow", params);
    },
    delColumn: function(column) {
    	sub.editColumn();
    	var subColumn = $.common.isEmpty(column) ? "index" : column;
    	var ids = $.table.selectColumns(subColumn);
        if (ids.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $("#" + table.options.id).bootstrapTable('remove', { field: subColumn, values: ids });
    }
};

/** 设置全局ajax处理 */
$.ajaxSetup({
    complete: function(XMLHttpRequest, textStatus) {
        if (textStatus == 'timeout') {
        	$.modal.alertWarning("服务器超时，请稍后再试！");
        	$.modal.enable();
            $.modal.closeLoading();
        } else if (textStatus == "parsererror" || textStatus == "error") {
        	$.modal.alertWarning("服务器错误，请联系管理员！");
        	$.modal.enable();
            $.modal.closeLoading();
        }
    }
});
